"""
认证应用路由模块
负责注册和管理认证相关的所有API路由
"""
from fastapi import APIRouter
from apps.auth.models.user import User
from pkg.middlewares.auth_middleware import get_current_user
from fastapi import Depends

# 定义API前缀 - 这将被apps.py用于路由挂载
API_PREFIX = "/auth"

# 创建路由器实例
# dependencies=[Depends(get_current_user)]
router = APIRouter(dependencies=[Depends(get_current_user)])

# 导入所有控制器以注册路由（确保所有控制器中的路由都注册到这个router实例）
try:
    # 导入用户控制器模块
    from apps.auth.controllers.user_controller import router as user_router
    # 导入角色控制器模块
    from apps.auth.controllers.role_controller import router as role_router
    # 导入权限控制器模块
    from apps.auth.controllers.permission_controller import router as permission_router
    # 导入认证控制器模块
    from apps.auth.controllers.auth_controller import router as auth_router
    
    # 包含子路由
    # 添加前缀

    router.include_router(auth_router)
    router.include_router(user_router)
    router.include_router(role_router)
    router.include_router(permission_router)

except ImportError as e:
    raise

# 以下是该应用的路由概述记录，便于开发参考
"""
已注册的路由:

用户管理接口:
1. /auth/users - GET - 获取用户列表(分页)
2. /auth/users/{user_id} - GET - 获取指定用户详情
3. /auth/users - POST - 创建新用户
4. /auth/users/{user_id} - PUT - 部分更新用户信息
5. /auth/users/{user_id}/whole - PUT - 全量更新用户信息
6. /auth/users/{user_id} - DELETE - 软删除用户
7. /auth/users/{user_id}/true - DELETE - 硬删除用户
8. /auth/users/{user_id}/password - PUT - 设置用户密码

角色管理接口:
1. /auth/roles - GET - 获取角色列表(分页)
2. /auth/roles/{role_id} - GET - 获取指定角色详情
3. /auth/roles - POST - 创建新角色
4. /auth/roles/{role_id} - PATCH - 部分更新角色信息
5. /auth/roles/{role_id} - PUT - 全量更新角色信息
6. /auth/roles/{role_id} - DELETE - 删除角色
7. /auth/roles/{role_id}/permissions - GET - 获取角色权限
8. /auth/roles/{role_id}/permissions/{permission_id} - POST - 为角色分配权限
9. /auth/roles/{role_id}/permissions/{permission_id} - DELETE - 移除角色权限
10. /auth/roles/{role_id}/permissions - PUT - 更新角色权限

权限管理接口:
1. /auth/permissions - GET - 获取权限列表(分页)
2. /auth/permissions/modules - GET - 获取权限模块列表
3. /auth/permissions/{permission_id} - GET - 获取指定权限详情
4. /auth/permissions - POST - 创建新权限
5. /auth/permissions/{permission_id} - PATCH - 部分更新权限信息
6. /auth/permissions/{permission_id} - PUT - 全量更新权限信息
7. /auth/permissions/{permission_id} - DELETE - 删除权限
8. /auth/permissions/{permission_id}/roles - GET - 获取拥有权限的角色列表
9. /auth/permissions/{permission_id}/users - GET - 获取拥有权限的用户列表
10. /auth/permissions/{permission_id}/users/{user_id} - POST - 为用户分配权限
11. /auth/permissions/{permission_id}/users/{user_id} - DELETE - 移除用户权限
"""